package com.bcqn.dao;

import com.bcqn.model.PostReview;
import com.bcqn.model.User;
import com.bcqn.vo.PostReviewVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface PostReviewMapper {
    int deleteByPrimaryKey(Long id);

    int insert(PostReview record);

    int insertSelective(PostReview record);

    PostReview selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(PostReview record);

    int updateByPrimaryKey(PostReview record);

    User getUserById(Long userId);

    /**
     *根据帖子id和类型查询评论
     */
    List<PostReviewVo> getByPostId(@Param("postId") Long postId, @Param("orderType") Integer orderType, @Param("start") Integer start, @Param("PageSize") Integer PageSize);

    /**
     *根据评论查询子评论
     */
    List<PostReviewVo> getById(@Param("id") Long id, @Param("start") Integer start, @Param("PageSize") Integer PageSize);

    /**
     * 评论点赞取消点赞 更新数据库的点赞总数
     */
    int updateCountLike(@Param("reviewId") Long reviewId, @Param("num") Long num);

    /**
     * 根据评论的id查询评论的所有信息
     * @param reviewId
     * @return
     */
    PostReview getReview(Long reviewId);

    /**
     * 批量更新评论点赞信息
     * @param map
     * @return
     */
    int batchUpdatePostReviewLike(@Param("postReviewLikeMap") Map<Long, Integer> map);

    Long getReviewCount(@Param("originalReviewId") Long originalReviewId);
}
